<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2019/3/20
 * Time: 0:21
 */
function isEmpty($val)
{
    if (!is_string($val)) return false; //是否是字符串类型

    if (empty($val)) return false; //是否已设定

    if ($val=='') return false; //是否为空

    return true;

}
/*
 -----------------------------------------------------------
函数名称：isNumber
简要描述：检查输入的是否为数字
输入：string
输出：boolean
修改日志：------
-----------------------------------------------------------
*/
function isNumber($val)
{
    if(ereg("^[0-9]+$", $val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
函数名称：isPhone
简要描述：检查输入的是否为电话
输入：string
输出：boolean
修改日志：------
-----------------------------------------------------------
*/
function isPhone($val)
{
    //eg: xxx-xxxxxxxx-xxx | xxxx-xxxxxxx-xxx ...
    if(ereg("^((0\d{2,3})-)(\d{7,8})(-(\d{3,}))?$",$val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
函数名称：isPostcode
简要描述：检查输入的是否为邮编
输入：string
输出：boolean
修改日志：------
-----------------------------------------------------------
*/
function isPostcode($val)
{
    if(ereg("^[0-9]{4,6}$",$val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
函数名称：isEmail
简要描述：邮箱地址合法性检查
输入：string
输出：boolean
修改日志：------
-----------------------------------------------------------
*/
function isEmail($val,$domain="")
{
    if(!$domain)
    {
        if( preg_match("/^[a-z0-9-_.]+@[\da-z][\.\w-]+\.[a-z]{2,4}$/i", $val) )
        {
            return true;
        }
        else
            return false;
    }
    else
    {
        if( preg_match("/^[a-z0-9-_.]+@".$domain."$/i", $val) )
        {
            return true;
        }
        else
            return false;
    }
}//end func

/*
 -----------------------------------------------------------
函数名称：isName
简要描述：姓名昵称合法性检查，只能输入中文英文
输入：string
输出：boolean
修改日志：------
-----------------------------------------------------------
*/
function isName($val)
{
    if( preg_match("/^[\x80-\xffa-zA-Z0-9]{3,60}$/", $val) )//2008-7-24
    {
        return true;
    }
    return false;
}//end func


/*
 -----------------------------------------------------------
函数名称:isStrLength($theelement, $min, $max)
简要描述:检查字符串长度是否符合要求
输入:mixed (字符串，最小长度，最大长度)
输出:boolean
修改日志:------
-----------------------------------------------------------
*/
function isStrLength($val, $min, $max)
{
    $theelement= trim($val);
    if(ereg("^[a-zA-Z0-9]{".$min.",".$max."}$",$val))
        return true;
    return false;
}


/*
 -----------------------------------------------------------
函数名称:isNumberLength($theelement, $min, $max)
简要描述:检查字符串长度是否符合要求
输入:mixed (字符串，最小长度，最大长度)
输出:boolean
修改日志:------
-----------------------------------------------------------
*/
function isNumLength($val, $min, $max)
{
    $theelement= trim($val);
    if(ereg("^[0-9]{".$min.",".$max."}$",$val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
函数名称:isNumberLength($theelement, $min, $max)
简要描述:检查字符串长度是否符合要求
输入:mixed (字符串，最小长度，最大长度)
输出:boolean
修改日志:------
-----------------------------------------------------------
*/
function isEngLength($val, $min, $max)
{
    $theelement= trim($val);
    if(ereg("^[a-zA-Z]{".$min.",".$max."}$",$val))
        return true;
    return false;
}

/*
 -----------------------------------------------------------
函数名称：isEnglish
简要描述：检查输入是否为英文
输入：string
输出：boolean
作者：------
修改日志：------
-----------------------------------------------------------
*/
function isEnglish($theelement)
{
    if( ereg("[\x80-\xff].",$theelement) )
    {
        Return false;
    }
    Return true;
}

/*
 -----------------------------------------------------------
函数名称：isChinese
简要描述：检查是否输入为汉字
输入：string
输出：boolean
修改日志：------
-----------------------------------------------------------
*/
/*
function isChinese($sInBuf)//有问题的函数
{
    $iLen= strlen($sInBuf);
    for($i= 0; $i< $iLen; $i++)
    {
    if(ord($sInBuf{$i})>=0x80)
        {
        if( (ord($sInBuf{$i})>=0x81 && ord($sInBuf{$i})<=0xFE) && ((ord($sInBuf{$i+1})>=0x40 && ord($sInBuf{$i+1}) < 0x7E) || (ord($sInBuf{$i+1}) > 0x7E && ord($sInBuf{$i+1})<=0xFE)) )
        {
        if(ord($sInBuf{$i})>0xA0 && ord($sInBuf{$i})<0xAA)
            {
                //有中文标点
                    return false;
        }
        }
        else
        {
        //有日文或其它文字
        return false;
        }
        $i++;
        }
            else
                {
                    return false;
        }
        }
        return true;
    }*/


function isChinese($sInBuf)//正确的函数
{
    if (preg_match("/^[\x7f-\xff]+$/", $sInBuf)) { //兼容gb2312,utf-8

        return true;
    }
    else
    {
        return false;
    }
}
/*
 -----------------------------------------------------------
函数名称:isDomain($Domain)
简要描述:检查一个（英文）域名是否合法
输入:string 域名
输出:boolean
修改日志:------
-----------------------------------------------------------
*/
function isDomain($Domain)
{
    if(!eregi("^[0-9a-z]+[0-9a-z\.-]+[0-9a-z]+$", $Domain))
    {
        Return false;
    }
    if( !eregi("\.", $Domain))
    {
        Return false;
    }

    if(eregi("\-\.", $Domain) or eregi("\-\-", $Domain) or eregi("\.\.", $Domain) or eregi("\.\-", $Domain))
    {
        Return false;
    }

    $aDomain= explode(".",$Domain);
    if( !eregi("[a-zA-Z]",$aDomain[count($aDomain)-1]) )
    {
        Return false;
    }

    if(strlen($aDomain[0]) > 63 || strlen($aDomain[0]) < 1)
    {
        Return false;
    }
    Return true;
}
/**
 * 验证是否日期的函数
 * @param unknown_type $date
 * @param unknown_type $format
 * @throws Exception
 * @return boolean
 */
function validateDate( $date, $format='YYYY-MM-DD')
{
    switch( $format )
    {
        case 'YYYY/MM/DD':
        case 'YYYY-MM-DD':
            list( $y, $m, $d ) = preg_split( '/[-./ ]/', $date );
            break;

        case 'YYYY/DD/MM':
        case 'YYYY-DD-MM':
            list( $y, $d, $m ) = preg_split( '/[-./ ]/', $date );
            break;

        case 'DD-MM-YYYY':
        case 'DD/MM/YYYY':
            list( $d, $m, $y ) = preg_split( '/[-./ ]/', $date );
            break;

        case 'MM-DD-YYYY':
        case 'MM/DD/YYYY':
            list( $m, $d, $y ) = preg_split( '/[-./ ]/', $date );
            break;

        case 'YYYYMMDD':
            $y = substr( $date, 0, 4 );
            $m = substr( $date, 4, 2 );
            $d = substr( $date, 6, 2 );
            break;

        case 'YYYYDDMM':
            $y = substr( $date, 0, 4 );
            $d = substr( $date, 4, 2 );
            $m = substr( $date, 6, 2 );
            break;

        default:
            throw new Exception( "Invalid Date Format" );
    }
    return checkdate( $m, $d, $y );
}


/*
-----------------------------------------------------------
函数名称：isDate
简要描述：检查日期是否符合0000-00-00
    输入：string
        输出：boolean
        修改日志：------
        -----------------------------------------------------------
        */
function isDate($sDate)
{
    if( ereg("^[0-9]{4}\-[][0-9]{2}\-[0-9]{2}$",$sDate) )
    {
        Return true;
    }
    else
    {
        Return false;
    }
}
/*
 -----------------------------------------------------------
 函数名称：isTime
 简要描述：检查日期是否符合0000-00-00 00:00:00
 输入：string
 输出：boolean
 修改日志：------
 -----------------------------------------------------------
 */
function isTime($sTime)
{
    if( ereg("^[0-9]{4}\-[][0-9]{2}\-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$",$sTime) )
    {
        Return true;
    }
    else
    {
        Return false;
    }
}

/*
-----------------------------------------------------------
函数名称:isMoney($val)
简要描述:检查输入值是否为合法人民币格式
输入:string
输出:boolean
修改日志:------
-----------------------------------------------------------
*/
function isMoney($val)
{
    if(ereg("^[0-9]{1,}$", $val))
        return true;
    if( ereg("^[0-9]{1,}\.[0-9]{1,2}$", $val) )
        return true;
    return false;
}

/*
 -----------------------------------------------------------
函数名称:isIp($val)
    简要描述:检查输入IP是否符合要求
    输入:string
        输出:boolean
        修改日志:------
        -----------------------------------------------------------
        */
function isIp($val)
{
    return(bool) ip2long($val);
}
//-----------------------------------------------------------------------------



/**
 * 验证手机号
 * @param int $mobile
 */
function valid_mobile($mobile){
    if(strlen($mobile)!=11) return false;
    if(preg_match('/13[0-9]\d{8}|15[0|1|2|3|5|6|7|8|9]\d{8}|18[0|5|6|7|8|9]\d{8}/',$mobile)){
        return true;
    }else{
        return false;
    }
}

/**
 * 缩略图生成函数，最好使用GD2
 *
 * @param string $srcFile 要生成缩略图的文件
 * @param int $toW 缩略图宽度
 * @param int $toH 缩略图高度
 * @param string $toFile 缩略图文件
 */
function ImageResize($srcFile,$toW,$toH,$toFile=""){
    if($toFile==""){ $toFile = $srcFile; }
    $info = "";
    $data = GetImageSize($srcFile,$info);
    switch ($data[2]){
        case 1:
            if(!function_exists("imagecreatefromgif")){
                //echo "你的GD库不能使用GIF格式的图片，请使用Jpeg或PNG格式！<a href='javascript:go(-1);'>返回</a>";
                return false;
            }
            $im = ImageCreateFromGIF($srcFile);
            break;
        case 2:
            if(!function_exists("imagecreatefromjpeg")){
                //echo "你的GD库不能使用jpeg格式的图片，请使用其它格式的图片！<a href='javascript:go(-1);'>返回</a>";
                return false;
            }
            $im = ImageCreateFromJpeg($srcFile);
            break;
        case 3:
            $im = ImageCreateFromPNG($srcFile);
            break;
    }
    $srcW=ImageSX($im);
    $srcH=ImageSY($im);
    $toWH=$toW/$toH;
    $srcWH=$srcW/$srcH;
    if($toWH<=$srcWH){
        $ftoW=$toW;
        $ftoH=$ftoW*($srcH/$srcW);
    }
    else{
        $ftoH=$toH;
        $ftoW=$ftoH*($srcW/$srcH);
    }
    if($srcW>$toW||$srcH>$toH)
    {
        if(function_exists("imagecreatetruecolor")){
            @$ni = ImageCreateTrueColor($ftoW,$ftoH);
            if($ni) ImageCopyResampled($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
            else{
                $ni=ImageCreate($ftoW,$ftoH);
                ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
            }
        }else{
            $ni=ImageCreate($ftoW,$ftoH);
            ImageCopyResized($ni,$im,0,0,0,0,$ftoW,$ftoH,$srcW,$srcH);
        }
        if(function_exists('imagejpeg')) ImageJpeg($ni,$toFile);
        else ImagePNG($ni,$toFile);
        ImageDestroy($ni);
    }else{
        ImageDestroy($im);
        return false;
    }
    ImageDestroy($im);
    return true;
}



//去除字符串空格
 function strTrim($str)
{
    return preg_replace("/\s/","",$str);
}

//验证用户名
 function userName($str,$type,$len)
{
    $str=self::strTrim($str);
    if($len<strlen($str))
    {
        return false;
    }else{
        switch($type)
        {
            case "EN"://纯英文
                if(preg_match("/^[a-zA-Z]+$/",$str))
                {
                    return true;
                }else{
                    return false;
                }
                break;
            case "ENNUM"://英文数字
                if(preg_match("/^[a-zA-Z0-9]+$/",$str))
                {
                    return true;
                }else{
                    return false;
                }
                break;
            case "ALL":        //允许的符号(|-_字母数字)
                if(preg_match("/^[\|\-\_a-zA-Z0-9]+$/",$str))
                {
                    return true;
                }else{
                    return false;
                }
                break;
        }
    }
}

//验证密码长度
 function passWord($min,$max,$str)
{
    $str=self::strTrim($str);
    if(strlen($str)>=$min && strlen($str)<=$max)
    {
        return true;
    }else{
        return false;
    }
}

//验证Email
 function Email($str)
{
    $str=self::strTrim($str);

    if(preg_match("/^([a-z0-9_]|\\-|\\.)+@(([a-z0-9_]|\\-)+\\.){1,2}[a-z]{2,4}$/i",$str))
    {
        return true;
    }else{
        return false;
    }

}

//验证身份证(中国)
 function idCard($str)
{
    $str=self::strTrim($str);
    if(preg_match("/^([0-9]{15}|[0-9]{17}[0-9a-z])$/i",$str))
    {
        return true;
    }else{
        return false;
    }
}

//验证座机电话
 function Phone($type,$str)
{
    $str=self::strTrim($str);
    switch($type)
    {
        case "CHN":
            if(preg_match("/^([0-9]{3}|0[0-9]{3})-[0-9]{7,8}$/",$str))
            {
                return true;
            }else{
                return false;
            }
            break;
        case "INT":
            if(preg_match("/^[0-9]{4}-([0-9]{3}|0[0-9]{3})-[0-9]{7,8}$/",$str))
            {
                return true;
            }else{
                return false;
            }
            break;
    }
}